Unityでインカメラを使ってストリーミング動画をアレする
概要
お前はなぜそれをUnityで シリーズ。
やる。
WebCamTexture
これ使えばいけそう。
https://docs.unity3d.com/ScriptReference/WebCamTexture-devices.html
ドキュメントに書いといてほしいんだけど、
Nativeのカメラから取得できるテクスチャ、無茶苦茶制約が強い。
具体的には、
・サイズ指定が効くわけではない、一番近いサイズが来る(なんでだよ)
・取得後にサイズ調整すると中身が消える(なんでだよ)
・Spriteにしてから取得しても中身が消える(いやだからなんでだよ)
なので、WebCamTexから取得 -> byte化 -> byteからテクスチャ生成 -> 変形 -> byte化 とかが使えるのでは。
-> いけた。
まとめ
WebCamTextureを使う場合、次のような手順を踏むといい感じにリサイズできる。
1.GetPixelsで通常のテクスチャに移動
2.このテクスチャをjpg byte[]に変換
3.jpeg byte[] からテクスチャを生成
4.3にリサイズ処理を施す
5.4をjpg byte[]に変換
ほんとなんでだよ。
まあ、ネイティブのUIImageとかが保持してるリソースのGetPixelsが、ポインタを移動してるだけなのでは?という気がしている。